package com.itheima.controller;

import com.itheima.pojo.Emp;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;


/*
    完成加载员工数据
*/
// @Controller注解是@Component的衍生注解 用于标注在controller类上 但是@RestController注解包含@Controller注解所以不用写

@RestController
public class EmpController {

//    @RequestMapping("/listEmp")  // 此处的地址要与emp.html中需要引用的地址一致
//    public Result list(){
//        // 第一步 使用XmlParserUtils方法解析emp.xml文件
//        // 需要传入两个参数 第一个参数是解析的xml文件 第二个参数是解析的对象 就是要解析成什么样
//
//        // 先拿到类加载器ClassLoader：负责加载类的对象，类加载器还负责定位资源
//        // 再用ClassLoader中的Resource方法定位文件，最后使用getFile获得文件的路径
//        String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();
//        List<Emp> empList = XmlParserUtils.parse(file, Emp.class);
//
//        // 第二步 对解析出来的数据进行修改
//        // gender: 1 -> 男 2 -> 女
//        // job: 1 -> 讲师 2 -> 班主任 3 -> 就业指导
//        empList.stream().forEach(emp -> {
//            String gender = emp.getGender();
//            if ("1".equals(gender)){
//                emp.setGender("男");
//            }else if ("2".equals(gender)){
//                emp.setGender("女");
//            }
//
//            String job = emp.getJob();
//            if ("1".equals(job)){
//                emp.setJob("讲师");
//            }else if ("2".equals(job)){
//                emp.setJob("班主任");
//            }else if ("3".equals(job)){
//                emp.setJob("就业指导");
//            }
//        });
//
//        // 第三步 相应数据
//        return Result.success(empList);
//    }

    // 上述写法将数据访问 数据处理 数据响应都放在一起不利于代码的管理
    // 因此引入三层架构的写法 将数据访问放在dao类中 将数据处理放在service类中 将响应数据放在controller类中


    // 最后进行数据的响应
    // 响应数据之前要先进行数据的处理

//    @Autowired // 运行时 ioc容器会提供该类型的bean对象 并赋值给变量
//    @Qualifier("empServiceA")
//    private EmpService empService;
//    @Resource(name = "empServiceB")
//    private EmpService empService;
//
    //响应数据时需要获取逻辑处理后的数据，所以需要引入EmpServiceA
    @Autowired
    // 使用@Autowired注解将容器中的实现类EmpServiceA交给下面创建的对象管理
    private EmpService empService;
    @RequestMapping("/listEmp")
    public Result list(){
        //调用EmpServiceA类中的listEmp方法获取数据
        List<Emp> empList = empService.listEmp();
        return Result.success(empList);
    }
}
